package com.app.sgd.controller.action;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.app.sgd.business.dao.OracleExpedienteDAO;
import com.app.sgd.business.dao.SQLExpedienteDAO;
import com.app.sgd.business.facade.VariablesFacade;
import com.app.sgd.manager.SGDDispatchAction;
import com.app.sgd.model.bean.Documento;
import com.app.sgd.model.bean.ExpedienteBCA;
import com.app.sgd.model.bean.Usuario;
import com.app.sgd.util.Constants;
import com.app.sgd.util.SessionConstants;
import com.app.sgd.view.actionform.ExpedienteBCAForm;
import com.app.sgd.view.vo.FiltroBusquedaVO;

public class ExpedienteBCAAction extends SGDDispatchAction{
	private static Logger logger = Logger.getLogger(ExpedienteBCAAction.class);
	
	public void reset(ActionForm form, HttpServletRequest request){
		ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
		formdoc.setCodEstado(new String());
		formdoc.setCodTipoProceso(new String());
		formdoc.setFechaFin(new String());
		formdoc.setFechaInicio(new String());
		formdoc.setNumExpedienteBCA(new String());
		formdoc.setSeleccionado(new String());
		formdoc.setFlgSeleccion(Constants.VALOR_DEFAULT_CERO);
		formdoc.setCodExpedienteBCASel(new String());
		formdoc.setNumExpedienteBCASel(new String());
		formdoc.setCodTipoExpedienteBCASel(new String());
		formdoc.setLstDocumentosExpediente(new ArrayList());
		request.getSession().removeAttribute(SessionConstants.LISTA_EXPEDIENTESBCA_MOSTRAR);
		request.getSession().removeAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA);
	}
	
	public void resetBusqueda(ActionForm form, HttpServletRequest request){
		ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
		formdoc.setCodTipoMovimiento(Constants.VALOR_DEFAULT_CERO);
		formdoc.setCodTipoDocumento(Constants.VALOR_DEFAULT_CERO);
		formdoc.setCodOficinaEmisor(Constants.VALOR_DEFAULT_CERO);
		formdoc.setCodOficinaDestino(Constants.VALOR_DEFAULT_CERO);
		formdoc.setNumDocumento(Constants.VALOR_DEFAULT_VACIO);
		formdoc.setAsuntoDocumento(Constants.VALOR_DEFAULT_VACIO);
		formdoc.setFechaDocInicio(Constants.VALOR_DEFAULT_VACIO);
		formdoc.setFechaDocFin(Constants.VALOR_DEFAULT_VACIO);
		formdoc.setFlgSeleccion(Constants.VALOR_DEFAULT_CERO);
		formdoc.setNroRegistro(Constants.VALOR_DEFAULT_VACIO);
		request.getSession().removeAttribute(SessionConstants.LISTA_DOCUMENTOS_POR_ASOCIAR_EXPEDIENTES);
	}
	
	public ActionForward busquedaExpedientes(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			reset(form,request);
			VariablesFacade variablesFacade = new VariablesFacade();
			ArrayList lstTipoProcesoExpBCA = variablesFacade.getTipoProcesoExpBCA();
			ArrayList lstTipoEstadoExpBCA = variablesFacade.getTipoEstadoExpBCA();
			request.getSession().setAttribute(SessionConstants.LISTA_TIPO_PROCESO_EXPED_BCA, lstTipoProcesoExpBCA);
			request.getSession().setAttribute(SessionConstants.LISTA_TIPO_ESTADO_EXPED_BCA, lstTipoEstadoExpBCA);
			
			return mapping.findForward("busquedaExpedientes");
		}catch(Exception e){
			logger.error("[STD]: Error en busquedaExpedientes "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward buscarExpedientesBCA(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			OracleExpedienteDAO oracleExpedienteDAO = new OracleExpedienteDAO();
			
			FiltroBusquedaVO filtroBusquedaVO = new FiltroBusquedaVO();
			filtroBusquedaVO.setCodTipoProceso(formdoc.getCodTipoProceso());
			filtroBusquedaVO.setNumExpedienteBCA(formdoc.getNumExpedienteBCA());
			filtroBusquedaVO.setFechaInicio(formdoc.getFechaInicio());
			filtroBusquedaVO.setFechaFin(formdoc.getFechaFin());
			filtroBusquedaVO.setCodEstado(formdoc.getCodEstado());
			filtroBusquedaVO.setOpcion(Constants.VALOR_DEFAULT_UNO);
			
//			ArrayList lstExpedientesBCA = oracleExpedienteDAO.verificarExpedienteBCA(filtroBusquedaVO);
			ArrayList lstExpedientesBCA = oracleExpedienteDAO.listarExpedientesBCA(filtroBusquedaVO);
			request.getSession().setAttribute(SessionConstants.LISTA_EXPEDIENTESBCA_MOSTRAR, lstExpedientesBCA);
			
			return mapping.findForward("busquedaExpedientes");
		}catch(Exception e){
			logger.error("[STD]: Error en buscarExpedientesBCA "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward siguiente(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		return mapping.findForward("busquedaExpedientes");
	}
	
	public ActionForward seleccionarExpedienteBCA(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			String index = request.getParameter("index");
			
			ArrayList lstExpedientes = (ArrayList)request.getSession().getAttribute(SessionConstants.LISTA_EXPEDIENTESBCA_MOSTRAR);
			ExpedienteBCA expedienteBCA = (ExpedienteBCA) lstExpedientes.get(Integer.parseInt(index));
			
			formdoc.setFlgSeleccion("1");
			formdoc.setCodExpedienteBCASel(expedienteBCA.getNumeroExpediente());
			formdoc.setNumExpedienteBCASel(expedienteBCA.getNumeroExpedienteBCA());
			formdoc.setCodTipoExpedienteBCASel(expedienteBCA.getCodigoTipoExpedienteBCA());
			
//			AdministracionDocumentoForm datos = (AdministracionDocumentoForm)form;
//			datos.setFicha(Constants.FICHA_4);
			
			return mapping.findForward("busquedaExpedientes");
		}catch(Exception e){
			logger.error("[STD]: Error en seleccionarExpedienteBCA "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward mantenimientoExpedientesBCA(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			reset(form,request);
			VariablesFacade variablesFacade = new VariablesFacade();
			ArrayList lstTipoProcesoExpBCA = variablesFacade.getTipoProcesoExpBCA();
			ArrayList lstTipoEstadoExpBCA = variablesFacade.getTipoEstadoExpBCA();
			request.getSession().setAttribute(SessionConstants.LISTA_TIPO_PROCESO_EXPED_BCA, lstTipoProcesoExpBCA);
			request.getSession().setAttribute(SessionConstants.LISTA_TIPO_ESTADO_EXPED_BCA, lstTipoEstadoExpBCA);
			
			return mapping.findForward("mantenimientoExpedientesBCA");
		}catch(Exception e){
			logger.error("[STD]: Error en mantenimientoExpedientesBCA "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward siguienteExpediente(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		return mapping.findForward("mantenimientoExpedientesBCA");
	}
	
	public ActionForward filtrarExpedientesBCA(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			OracleExpedienteDAO oracleExpedienteDAO = new OracleExpedienteDAO();
			
			FiltroBusquedaVO filtroBusquedaVO = new FiltroBusquedaVO();
			filtroBusquedaVO.setCodTipoProceso(formdoc.getCodTipoProceso());
			filtroBusquedaVO.setNumExpedienteBCA(formdoc.getNumExpedienteBCA());
			filtroBusquedaVO.setFechaInicio(formdoc.getFechaInicio());
			filtroBusquedaVO.setFechaFin(formdoc.getFechaFin());
			filtroBusquedaVO.setCodEstado(formdoc.getCodEstado());
			filtroBusquedaVO.setOpcion(Constants.VALOR_DEFAULT_UNO);
			
			ArrayList lstExpedientesBCA = oracleExpedienteDAO.listarExpedientesBCA(filtroBusquedaVO);
			request.getSession().setAttribute(SessionConstants.LISTA_EXPEDIENTESBCA_MOSTRAR, lstExpedientesBCA);
			
			return mapping.findForward("mantenimientoExpedientesBCA");
		}catch(Exception e){
			logger.error("[STD]: Error en filtrarExpedientesBCA "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	
	public ActionForward lstDocumentosExpediente(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			String index = request.getParameter("index");
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			ArrayList lstExpedientesBCA = (ArrayList)request.getSession().getAttribute(SessionConstants.LISTA_EXPEDIENTESBCA_MOSTRAR);
			ExpedienteBCA expedienteBCA = new ExpedienteBCA();
			expedienteBCA = (ExpedienteBCA)lstExpedientesBCA.get(Integer.parseInt(index));
			
			formdoc.setCodigoTipoExpedienteBCADet(expedienteBCA.getCodigoTipoExpedienteBCA());
			formdoc.setNumeroExpedienteDet(expedienteBCA.getNumeroExpediente());
			formdoc.setCodigoTipoTematicoDet(expedienteBCA.getCodigoTipoTematico());
			formdoc.setCodigoSubtipoTematicoDet(expedienteBCA.getCodigoSubtipoTematico());
			formdoc.setCodigoTematicoDet(expedienteBCA.getCodigoTematico());
			formdoc.setFechaExpedienteDet(expedienteBCA.getFechaExpediente());
			formdoc.setNombreTematicoDet(expedienteBCA.getNombreTematico());
			formdoc.setDescripcionTipoExpedienteBCADet(expedienteBCA.getDescripcionTipoExpedienteBCA());
			formdoc.setNumeroExpedienteBCADet(expedienteBCA.getNumeroExpedienteBCA());
			formdoc.setDescEstadoBCADet(expedienteBCA.getDescEstadoBCA());
			formdoc.setSolicitantesDet(expedienteBCA.getSolicitantes());
			formdoc.setDemandadoDet(expedienteBCA.getDemandado());
			formdoc.setProfesionalesDet(expedienteBCA.getProfesionales());
			
			SQLExpedienteDAO sqlExpedienteDAO = new SQLExpedienteDAO();
			ArrayList lstDocumentosExpediente = new ArrayList();
			try{
				lstDocumentosExpediente = sqlExpedienteDAO.lstDocumentosAsociadosExpediente(Integer.parseInt(expedienteBCA.getNumeroExpediente()));
				request.getSession().setAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA, lstDocumentosExpediente);
				formdoc.setLstDocumentosExpediente(lstDocumentosExpediente);
			}catch(Exception e){}
			
			return mapping.findForward("detalleExpedienteBCA");
		}catch(Exception e){
			logger.error("[STD]: Error en lstDocumentosExpediente "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward anadirDocumentosExpediente(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		resetBusqueda(form,request);
		ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
		Usuario usuarioLogin = (Usuario)request.getSession().getAttribute(SessionConstants.SGD_USUARIO_SESION_ACTIVO);
		String tipoBusqueda = (String)request.getSession().getAttribute(SessionConstants.TIPO_BUSQUEDA);
		VariablesFacade variablesFacade = new VariablesFacade();
		
		formdoc.setCodTipoMovimiento(Constants.TIPO_MOVIMIENTO_ENTRADA);
		formdoc.setCodOficinaEmisor(Constants.VALOR_DEFAULT_CERO);
		formdoc.setCodOficinaDestino(usuarioLogin.getEncargaturaPerfil().getCodArea());
		formdoc.setHabilitaOficinaEmisor(Constants.VALOR_DESHABILITADO);
		formdoc.setHabilitaOficinaDestino(Constants.VALOR_HABILITADO);
		
		ArrayList lstUnidadOrigen = variablesFacade.getOficina(); 
		request.getSession().setAttribute(SessionConstants.LISTA_UNIDAD_ORIGEN, lstUnidadOrigen);
		
		ArrayList lstTipoMovimiento = variablesFacade.getTipoMovimiento(0);
		request.getSession().setAttribute(SessionConstants.LISTA_TIPO_MOVIMIENTO, lstTipoMovimiento);
		
		ArrayList lstTipoDocumento = variablesFacade.getTipoDoc_Entrada(1);
		request.getSession().setAttribute(SessionConstants.LISTA_TIPO_DOCUMENTO, lstTipoDocumento);
		
		return mapping.findForward("anadirDocumentosExpediente");
	}
	
	public ActionForward cambiaTipoMovimiento(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
		Usuario usuarioLogin = (Usuario)request.getSession().getAttribute(SessionConstants.SGD_USUARIO_SESION_ACTIVO);
		String tipoBusqueda = (String)request.getSession().getAttribute(SessionConstants.TIPO_BUSQUEDA);
		VariablesFacade variablesFacade = new VariablesFacade();
		
		ArrayList lstTipoDocumento = new ArrayList(); 
		
		if(formdoc.getCodTipoMovimiento().equals(Constants.TIPO_MOVIMIENTO_ENTRADA)){
			lstTipoDocumento = variablesFacade.getTipoDoc_Entrada(1);
			formdoc.setCodOficinaEmisor(Constants.VALOR_DEFAULT_CERO);
			formdoc.setCodOficinaDestino(usuarioLogin.getEncargaturaPerfil().getCodArea());
			formdoc.setHabilitaOficinaEmisor(Constants.VALOR_DESHABILITADO);
			formdoc.setHabilitaOficinaDestino(Constants.VALOR_HABILITADO);
		}
		else{
			if(formdoc.getCodTipoMovimiento().equals(Constants.TIPO_MOVIMIENTO_SALIDA)){
				lstTipoDocumento = variablesFacade.getTipoDoc_Salida(1);
				formdoc.setCodOficinaEmisor(usuarioLogin.getEncargaturaPerfil().getCodArea());
				formdoc.setCodOficinaDestino(Constants.VALOR_DEFAULT_CERO);
				formdoc.setHabilitaOficinaEmisor(Constants.VALOR_HABILITADO);
				formdoc.setHabilitaOficinaDestino(Constants.VALOR_DESHABILITADO);
			}
			else{
				if(formdoc.getCodTipoMovimiento().equals(Constants.TIPO_MOVIMIENTO_INTERNO)){
					lstTipoDocumento = variablesFacade.getTipoDoc_Interno(1);
					formdoc.setCodOficinaEmisor(usuarioLogin.getEncargaturaPerfil().getCodArea());
					formdoc.setCodOficinaDestino(Constants.VALOR_DEFAULT_CERO);
					formdoc.setHabilitaOficinaEmisor(Constants.VALOR_HABILITADO);
					formdoc.setHabilitaOficinaDestino(Constants.VALOR_HABILITADO);
				}
			}
		}
		if(usuarioLogin.isPrivilegioAdministrador() || usuarioLogin.isPrivilegioTecnico() || usuarioLogin.isPrivilegioUsuarioGlobal()){
			formdoc.setCodOficinaEmisor(Constants.VALOR_DEFAULT_CERO);
			formdoc.setCodOficinaDestino(Constants.VALOR_DEFAULT_CERO);
		}
		request.getSession().setAttribute(SessionConstants.LISTA_TIPO_DOCUMENTO, lstTipoDocumento);
		
		return mapping.findForward("anadirDocumentosExpediente");
	}
	
	public ActionForward buscarDocumentosAsociar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			SQLExpedienteDAO sqlExpedienteDAO = new SQLExpedienteDAO(); 
			FiltroBusquedaVO filtroBusquedaVO = new FiltroBusquedaVO();
			filtroBusquedaVO.setCodTipoMovimiento(formdoc.getCodTipoMovimiento());
			filtroBusquedaVO.setCodTipoDocumento(formdoc.getCodTipoDocumento());
			filtroBusquedaVO.setCodOficinaOrigen(formdoc.getCodOficinaEmisor());
			filtroBusquedaVO.setCodOficinaDestino(formdoc.getCodOficinaDestino());
			filtroBusquedaVO.setNumDocumento(formdoc.getNumDocumento());
			filtroBusquedaVO.setAsunto(formdoc.getAsuntoDocumento());
			filtroBusquedaVO.setFechaInicio(formdoc.getFechaDocInicio());
			filtroBusquedaVO.setFechaFin(formdoc.getFechaDocFin());
			filtroBusquedaVO.setNumProveido((formdoc.getNroRegistro()==null || formdoc.getNroRegistro().equals(Constants.VALOR_DEFAULT_VACIO)) ? Constants.VALOR_DEFAULT_CERO : formdoc.getNroRegistro());
			
			ArrayList lstDocumentoSinAsociar = sqlExpedienteDAO.listarDocumentoSinAsociar(filtroBusquedaVO);
			request.getSession().setAttribute(SessionConstants.LISTA_DOCUMENTOS_POR_ASOCIAR_EXPEDIENTES, lstDocumentoSinAsociar);
			
			return mapping.findForward("anadirDocumentosExpediente");
		}catch(Exception e){
			logger.error("[STD]: Error en buscarDocumentosAsociar "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward adicionarDocumentosAsociar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			
			ArrayList lstDocumentosExpediente = (ArrayList)request.getSession().getAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA);
			int ind = lstDocumentosExpediente.size();
			
			String[] sel = formdoc.getCheckValuesDocumentosPorAsociar();
			ArrayList lstDocumentoSinAsociar = (ArrayList)request.getSession().getAttribute(SessionConstants.LISTA_DOCUMENTOS_POR_ASOCIAR_EXPEDIENTES);
			
			for(int i=0;i<sel.length;i++){
				Documento documento = (Documento)lstDocumentoSinAsociar.get(Integer.parseInt(sel[i]));
				documento.setIndiceDocumento(String.valueOf(ind++));
				lstDocumentosExpediente.add(documento);
			}
			request.getSession().setAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA,lstDocumentosExpediente);
			formdoc.setLstDocumentosExpediente(lstDocumentosExpediente);
			formdoc.setFlgSeleccion(Constants.VALOR_DEFAULT_UNO);
			
			return mapping.findForward("anadirDocumentosExpediente");
		}catch(Exception e){
			logger.error("[STD]: Error en adicionarDocumentosAsociar "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward refrescarDocumentos(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		return mapping.findForward("detalleExpedienteBCA");
	}
	
	public ActionForward regresarMantExpedientes(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		return mapping.findForward("mantenimientoExpedientesBCA");
	}
	
	public ActionForward actualizarDocumentosExpediente(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			Usuario usuario = (Usuario) request.getSession().getAttribute(SessionConstants.SGD_USUARIO_SESION_ACTIVO);
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			ExpedienteBCA expedienteBCA = new ExpedienteBCA();
			expedienteBCA.setCodigoTipoExpedienteBCA(formdoc.getCodigoTipoExpedienteBCADet());
			expedienteBCA.setNumeroExpediente(formdoc.getNumeroExpedienteDet());
			expedienteBCA.setNumeroExpedienteBCA(formdoc.getNumeroExpedienteBCADet());
			
			ArrayList lstDocumentosExpedienteUpd = (ArrayList)request.getSession().getAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA);
			SQLExpedienteDAO sqlExpedienteDAO = new SQLExpedienteDAO();
			int res = sqlExpedienteDAO.actualizarDocumentosExpediente(lstDocumentosExpedienteUpd,expedienteBCA,usuario);
			
			ArrayList lstDocumentosExpediente = new ArrayList();
			try{
				lstDocumentosExpediente = sqlExpedienteDAO.lstDocumentosAsociadosExpediente(Integer.parseInt(formdoc.getNumeroExpedienteDet()));
				request.getSession().setAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA, lstDocumentosExpediente);
				formdoc.setLstDocumentosExpediente(lstDocumentosExpediente);
			}catch(Exception e){}
			
			return mapping.findForward("detalleExpedienteBCA");
		}catch(Exception e){
			logger.error("[STD]: Error en actualizarDocumentosExpediente "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward retirarDocumentosExpediente(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		try{
			Usuario usuario = (Usuario) request.getSession().getAttribute(SessionConstants.SGD_USUARIO_SESION_ACTIVO);
			ExpedienteBCAForm formdoc = (ExpedienteBCAForm)form;
			ExpedienteBCA expedienteBCA = new ExpedienteBCA();
			expedienteBCA.setCodigoTipoExpedienteBCA(Constants.VALOR_DEFAULT_CERO);
			expedienteBCA.setNumeroExpediente(Constants.VALOR_DEFAULT_CERO);
			expedienteBCA.setNumeroExpedienteBCA(Constants.VALOR_DEFAULT_VACIO);
			
			ArrayList lstDocumentosExpedienteTot = (ArrayList)request.getSession().getAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA);
			String[] sel = formdoc.getCheckValuesDocumentosExpediente();
			ArrayList lstDocumentosExpedienteEli = new ArrayList();
			for(int i=0;i<sel.length;i++){
				lstDocumentosExpedienteEli.add(lstDocumentosExpedienteTot.get(Integer.parseInt(sel[i])));
			}
				
			SQLExpedienteDAO sqlExpedienteDAO = new SQLExpedienteDAO();
			int res = sqlExpedienteDAO.retirarDocumentosExpediente(lstDocumentosExpedienteEli,expedienteBCA,usuario);
			
			ArrayList lstDocumentosExpediente = new ArrayList();
			try{
				lstDocumentosExpediente = sqlExpedienteDAO.lstDocumentosAsociadosExpediente(Integer.parseInt(formdoc.getNumeroExpedienteDet()));
				request.getSession().setAttribute(SessionConstants.LISTA_DOCUMENTOS_EXPEDIENTEBCA, lstDocumentosExpediente);
				formdoc.setLstDocumentosExpediente(lstDocumentosExpediente);
			}catch(Exception e){}
			
			formdoc.setCheckValuesDocumentosExpediente(new String[0]);
			return mapping.findForward("detalleExpedienteBCA");
		}catch(Exception e){
			logger.error("[STD]: Error en retirarDocumentosExpediente "+e.getMessage());
			e.printStackTrace();
			return mapping.findForward("error");
		}
	}
	
	public ActionForward vistaPreliminarDocumentosExpediente(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		return mapping.findForward("vistaPreliminarDocumentosExpediente");
	}
}
